'''
Created on 09/12/2011

@author: Marina
'''

class FirstAdjust:
    '''
     
=============================Que es lo que hace?=========================
            
        
    Esta clase se encarga de dar la direccion fisica en donde se colocara el programa.
    Para eso busca en la memoria logica, espacio suficiente para el programa. En caso de que no haya
    lo que hace es decrile a Continue que haga compactacion. si aun asi no hay espcio, hace swap del programa.
    Busca el primer bloque en el que haya espacio suficente para el programa.  
    '''


    def __init__(self):
        '''
        Constructor
        '''

    def getPhisicalAdress(self, continua, program, manager):
        
        
        pSize = program.programSize
        
        for bloque in continua.logicalMemory:
            bVol = bloque.getVolumen
            if bVol >= pSize:#puse un igual aca"
                print bloque.getVolumen()
                val=bloque.getValorSuperior()
                bloque.setValorSuperior(bloque.valorSuperior + program.programSize)
                bloque.setVolumen(bloque.volumen-program.programSize+1)
                
                return val
            else: 
                if bloque.getVolumen== program.programSize():
                    valor = bloque.getValorSuperior()
                    continua.logicalMemory.remove(bloque)   # es asi como se borra de una lista?
                    return valor
                else:
                    if continua.hayEspacio(self, program.programSize):
                        continua.compactation()
    def entraEnUnBloque(self, continua, pSize):
        hay=False
        for bloque in continua.logicalMemory:
            hay= hay or bloque.getVolumen()>=pSize
            if hay is True:
                print "entra en un bloque:"  
                print hay
                return hay
        print "no entra en un bloque"  
        print hay  
        return hay
            
   
            
            
            
            
            
        